#include "linkStack.h"
#include"LinkQueue.h"
#include <iostream>
#include <ctime>

// size_t partiton(int *array,size_t start, size_t end)
// {
//     size_t left=start;
//     size_t right=end;
//     int temp =array[start];
//     while(left<right){
//         while(array[right]>temp&&left<right)
//             right--;
//         if(left<right){
//             array[left++]=array[right];
//         }
//         while(temp>array[left]&&left<right)
//             left++;
//             if(left<right)
//             array[right--]=array[left];
//     }
//     array[left]=temp;
//     return left;
// }
// //借助栈实现非递归的快速排序
// void fastNoRecur(int *a,size_t start,size_t end){
//     linkStack  s;//存放区间的栈
//     s.push((void*)start);
//     s.push((void*)end);

//     while(s.isEmpty()==false){//栈不为空，还有区间需要排序
//         //取区间
//         size_t right=(size_t)*s.getTop();
//         s.pop();
//         size_t left=(size_t)*s.getTop();
//         s.pop();
//         size_t mid=partiton(a,left,right);//把区间传给分组排序
//         if(mid !=0&&left<mid-1){
//             //左区间入栈
//             s.push((void*)left);
//             s.push((void*)(mid-1));
//         }
//         if(mid+1<right){
//             //右区间入栈
//             s.push((void*)(mid+1));
//             s.push((void*)right);
//         }
//     }
// }


int main(){
    // linkStack s;
    // for(long i=0;i<20;i++){
    //     s.push((void*)(i+1));
    // }

    // while(s.isEmpty()==false){
    //     std::cout<<*(int*)s.getTop()<<" ";
    //     s.pop();
    // }
    // std::cout<<std::endl;

    // int a[]={4,1,5,2,7,3,9};
    // fastNoRecur(a,0,sizeof(a)/sizeof(a[0])-1);
    // for(int i=0;i<sizeof(a)/sizeof(a[0]);i++){
    //     std::cout<<a[i]<<" ";
    // }
    // std::cout<<std::endl;
    // return 0;




    LinkQueue q;
    for(long i=0;i<20;i++)
    {
        q.push((void*)(i+1));
    }
    while(q.IsEmpty()==false)
    {
        std::cout<<(long)*q.GetFront()<<" ";
        q.Pop();
    }
    std::cout<<std::endl;













    return 0;
};